package com.navinfo.tripanalysis.common.arithmetic.convert;

import com.navinfo.tripanalysis.common.arithmetic.common.OuterEventData;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

/**
 * 事件数据与hbase格式转换
 *
 * @author 沈东生
 */
public class EventDataHbaseConvert {
    private static final byte[] d = Bytes.toBytes("d");

    /**
     * 对对象转换为Put
     *
     * @param m
     * @return
     */
    public static Put toPut(OuterEventData m) {
        long tid = m.getTid();
        Put put = new Put(Bytes.toBytes(new StringBuffer(String.valueOf(tid)).reverse().toString() + "|" + (3000000000000L - m.getStartGpsTime()) + "|" + m.getEvent().getNumber()));
        /*--start_schema*/
        if(m.getUid()!=null){put.addColumn(d, Bytes.toBytes("uid"), Bytes.toBytes(m.getUid()));}
        if(m.getTid()!=null){put.addColumn(d, Bytes.toBytes("terminalId"), Bytes.toBytes(m.getTid()));}
        if(m.getStype()!=null){put.addColumn(d, Bytes.toBytes("stype"), Bytes.toBytes(m.getStype()));}
        if(m.getStartGpsTime()!=null){put.addColumn(d, Bytes.toBytes("startGpsTime"), Bytes.toBytes(m.getStartGpsTime()));}
        if(m.getStartLatitude()!=null){put.addColumn(d, Bytes.toBytes("startLatitude"), Bytes.toBytes(m.getStartLatitude()));}
        if(m.getStartLongitude()!=null){put.addColumn(d, Bytes.toBytes("startLongitude"), Bytes.toBytes(m.getStartLongitude()));}
        if(m.getStartHeight()!=null){put.addColumn(d, Bytes.toBytes("startHeight"), Bytes.toBytes(m.getStartHeight()));}
        if(m.getStartSpeed()!=null){put.addColumn(d, Bytes.toBytes("startSpeed"), Bytes.toBytes(m.getStartSpeed()));}
        if(m.getStartGpsDirection()!=null){put.addColumn(d, Bytes.toBytes("startGpsDirection"), Bytes.toBytes(m.getStartGpsDirection()));}
        if(m.getStopGpsTime()!=null){put.addColumn(d, Bytes.toBytes("stopGpsTime"), Bytes.toBytes(m.getStopGpsTime()));}
        if(m.getStopLatitude()!=null){put.addColumn(d, Bytes.toBytes("stopLatitude"), Bytes.toBytes(m.getStopLatitude()));}
        if(m.getStopLongitude()!=null){put.addColumn(d, Bytes.toBytes("stopLongitude"), Bytes.toBytes(m.getStopLongitude()));}
        if(m.getStopHeight()!=null){put.addColumn(d, Bytes.toBytes("stopHeight"), Bytes.toBytes(m.getStopHeight()));}
        if(m.getStopSpeed()!=null){put.addColumn(d, Bytes.toBytes("stopSpeed"), Bytes.toBytes(m.getStopSpeed()));}
        if(m.getStopGpsDirection()!=null){put.addColumn(d, Bytes.toBytes("stopGpsDirection"), Bytes.toBytes(m.getStopGpsDirection()));}
        if(m.getDuration()!=null){put.addColumn(d, Bytes.toBytes("duration"), Bytes.toBytes(m.getDuration()));}
//          EventDataPb.EventType event -->
        if(m.getExtendField01()!=null){put.addColumn(d, Bytes.toBytes("extendField01"), Bytes.toBytes(m.getExtendField01()));}
        if(m.getExtendField02()!=null){put.addColumn(d, Bytes.toBytes("extendField02"), Bytes.toBytes(m.getExtendField02()));}
        if(m.getExtendField03()!=null){put.addColumn(d, Bytes.toBytes("extendField03"), Bytes.toBytes(m.getExtendField03()));}
        if(m.getExtendField04()!=null){put.addColumn(d, Bytes.toBytes("extendField04"), Bytes.toBytes(m.getExtendField04()));}
        if(m.getExtendField05()!=null){put.addColumn(d, Bytes.toBytes("extendField05"), Bytes.toBytes(m.getExtendField05()));}
        if(m.getExtendField06()!=null){put.addColumn(d, Bytes.toBytes("extendField06"), Bytes.toBytes(m.getExtendField06()));}
        if(m.getExtendField07()!=null){put.addColumn(d, Bytes.toBytes("extendField07"), Bytes.toBytes(m.getExtendField07()));}
        if(m.getExtendField08()!=null){put.addColumn(d, Bytes.toBytes("extendField08"), Bytes.toBytes(m.getExtendField08()));}
        if(m.getExtendField09()!=null){put.addColumn(d, Bytes.toBytes("extendField09"), Bytes.toBytes(m.getExtendField09()));}
        if(m.getExtendField10()!=null){put.addColumn(d, Bytes.toBytes("extendField10"), Bytes.toBytes(m.getExtendField10()));}
        /*--end_schema*/
        if (m.getDay() != null) {
            put.addColumn(d, Bytes.toBytes("day"), Bytes.toBytes(m.getDay()));
        }
        if (m.getEvent() != null) {
            put.addColumn(d, Bytes.toBytes("event"), Bytes.toBytes(m.getEvent().getNumber()));
            put.addColumn(d, Bytes.toBytes("eventName"), Bytes.toBytes(m.getEvent().name()));
        }
        return put;
    }


}
